home *** CD-ROM | disk | FTP | other *** search
/ Shareware Super Platinum 8 / Shareware Super Platinum 8.iso / mac / DATABASE / S9303.ZIP;1 / SPENCE.ZIP / ABTEST2.PRG < prev    next >
Encoding:
Text File  |  1993-01-05  |  3.2 KB  |  124 lines

  1. // Abtest2.prg
  2. //
  3. // Test routine to exercise simulated array browse class
  4.  
  5. #include "Abrowser.ch"
  6. #include "Directry.ch"
  7. #include "InKey.ch"
  8. #include "Dbstruct.ch"
  9.  
  10. #define CHILD_DELAY .3
  11.  
  12. FUNCTION AbTest2
  13.  
  14. LOCAL oTbrFiles := ABrowseNew()
  15. LOCAL aFiles := Directory("*.dbf")
  16. LOCAL lExitRequested := .F.
  17. LOCAL nKey
  18. LOCAL oTbc
  19. LOCAL oTbrStru := ABrowseNew()   
  20. LOCAL aStru
  21. LOCAL nSaveSel
  22. LOCAL cLastDbfName := ""
  23. LOCAL cThisDbfName
  24.  
  25.   IF Len(aFiles) < 1
  26.     Alert("No matching files")
  27.     QUIT
  28.   ENDIF
  29.  
  30.   oTbrFiles:arrayReference := aFiles
  31.  
  32.   TBInit(oTbrFiles, 1, 1, MaxRow() - 1, 29)
  33.  
  34.   CLEAR SCREEN
  35.   @ 0, 0 TO MaxRow(), 30
  36.  
  37.   oTbc := TBColumnNew("File Name", ;
  38.                       {|| aFiles[oTbrFiles:arrayIndex, F_NAME] })
  39.   oTbc:width := 12
  40.   oTbrFiles:addColumn(oTbc)
  41.  
  42.   oTbc := TBColumnNew("File Size", ;
  43.                       {|| aFiles[oTbrFiles:arrayIndex, F_SIZE] })
  44.   oTbrFiles:addColumn(oTbc)
  45.  
  46.   oTbc := TBColumnNew("File Date", ;
  47.                       {|| aFiles[oTbrFiles:arrayIndex, F_DATE] })
  48.   oTbrFiles:addColumn(oTbc)
  49.  
  50.   oTbc := TBColumnNew("File Time", ;
  51.                       {|| aFiles[oTbrFiles:arrayIndex, F_TIME] })
  52.   oTbrFiles:addColumn(oTbc)
  53.  
  54.   TBInit(oTbrStru, 1, 32, MaxRow() - 1, MaxCol() - 1)
  55.  
  56.   oTbc := TBColumnNew("Name", ;
  57.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  58.                                                   DBS_NAME] })
  59.   oTbc:width := 12
  60.   oTbrStru:addColumn(oTbc)
  61.  
  62.   oTbc := TBColumnNew("Type", ;
  63.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  64.                                                   DBS_TYPE] })
  65.   oTbc:width := 4
  66.   oTbrStru:addColumn(oTbc)
  67.  
  68.   oTbc := TBColumnNew("Len", ;
  69.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  70.                                                   DBS_LEN] })
  71.   oTbrStru:addColumn(oTbc)
  72.  
  73.   oTbc := TBColumnNew("Dec", ;
  74.                       {|| oTbrStru:arrayReference[oTbrStru:arrayIndex, ;
  75.                                                   DBS_LEN] })
  76.   oTbrStru:addColumn(oTbc)
  77.  
  78.   @ 0, 31 TO MaxRow(), MaxCol()
  79.  
  80.   DO WHILE !lExitRequested
  81.     DO WHILE NextKey() == 0 .AND. !oTbrFiles:stabilize()
  82.     ENDDO
  83.  
  84.     IF NextKey() != 0
  85.       nKey := InKey()
  86.     ELSE
  87.       nKey := InKey(CHILD_DELAY)
  88.       IF nKey == 0
  89.         // No key occurred within timeout - check to see whether
  90.         // need to redraw child TBrowse
  91.         cThisDbfName := oTbrFiles:arrayReference[oTbrFiles:arrayIndex, ;
  92.                                                  F_NAME]
  93.         IF !(cLastDbfName == cThisDbfName)
  94.           nSaveSel := Select()
  95.           USE (cThisDbfName) NEW
  96.           aStru := DbStruct()
  97.           CLOSE (cThisDbfName)
  98.           SELECT (nSaveSel)
  99.           oTbrStru:arrayReference := aStru
  100.  
  101.           DispBegin()
  102.           oTbrStru:refreshAll()
  103.           DO WHILE !oTbrStru:stabilize()
  104.           ENDDO
  105.           oTbrStru:deHilite()
  106.           DispEnd()
  107.  
  108.           cLastDbfName := cThisDbfName
  109.         ENDIF
  110.       ENDIF
  111.     ENDIF
  112.  
  113.     IF !StdMeth(oTbrFiles, nKey)
  114.       // Handle exceptions
  115.       DO CASE
  116.         CASE nKey == K_ESC
  117.           lExitRequested := .T.
  118.       ENDCASE
  119.     ENDIF
  120.  
  121.   ENDDO
  122.  
  123. RETURN NIL
  124.